<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 整理以下数组方法，写出数组方法的解释，并使用
      // 1.reduce 遍历数组  累加器 返回函数累计处理的结果，经常用于求和
      // prve:累计值 item：数组中每一项元素 index:索引 o:原数组
      // 0：起始值
      //   const arr = [1, 2, 3, 4, 5, 6]
      //   // const res = arr.reduce(function(prve,item,index,o) {
      //   //     return prve + item
      //   // },0)
      //   const res = arr.reduce((prve, item) => {
      //     return prve + item
      //   }, 0)
      //   console.log(res) //21

      // 2.filter 遍历数组 过滤筛选数组元素，并生成满足条件的的新数组
      // item:数组每项元素 index：索引 o当前数组
      // const arr = [1,2,3,4,5,6,7]
      // const newArr = arr.filter(function(item,index,o) {
      //     return item > 3
      // })
      // console.log(newArr) //[4, 5, 6, 7]

      // 3.some 判断数组是否有满足条件的元素 返回Boolean类型
      // const arr = [1,2,3,4,5,6,7]
      // const newArr = arr.some(function(item,index,o) {
      //     return item > 6
      // })
      // console.log(newArr) //true 没有就是false

      // 4.every 检测数组中所有元素是否都满足指定条件
      // 有一项不满足就返回false,都满足才返回true
      // const arr = [1,2,3,4,5,6,7]
      // const newArr = arr.every(item=> {
      //     return item > 6
      // })
      // console.log(newArr) //false

      // 5.map 遍历数组处理数据 返回新数组
      // item:数组每项元素 index：索引 o当前数组
      // const arr = [1,2,3,4,5,6]
      // const newArr = arr.map(function(item,index,o) {
      //     return item*item
      // })
      // console.log(newArr) //[1, 4, 9, 16, 25, 36]

      // 整理出来以下会改变原数组的数组方法
      // 1.push 在原数组尾部追加一个或多个元素，返回该数组的长度
      // const arr = [1,2,3,4,5]
      // arr.push(6,7,8) //返回值是数组的长度8
      // console.log(arr) // [1, 2, 3, 4, 5, 6, 7, 8]

      // 2.pop 删除数组的最后一个元素，返回该元素
      // const arr = ['张三','李四','王五','赵六']
      // console.log(arr.pop())  // 返回值是删除元素 赵六
      // console.log(arr) //['张三', '李四', '王五']

      // 3.unshift 在原数组前边添加一个或多个元素，返回该数组的长度
      // const arr = ['张三','李四','王五','赵六']
      // console.log(arr.unshift('七七')) // 返回值是数组的长度5
      // console.log(arr) // ['七七', '张三', '李四', '王五', '赵六']

      // 4.shift 删除数组的第一个元素，返回该元素
      // const arr = ['张三','李四','王五','赵六']
      // console.log( arr.shift()) //张三
      // console.log(arr) //['李四', '王五', '赵六']

      // 5.sort对原数组单元值排序
      // const arr = [2,5,8,9,23,56,89]
      // arr.sort(function(a,b) {
      //     // 升序
      //     return a - b
      // })
      // console.log(arr) // [2, 5, 8, 9, 23, 56, 89]

      // 6.reverse 对原数组进行翻转
      // const arr = [1,2,3,4,5,6,7]
      // console.log(arr.reverse()) // [7, 6, 5, 4, 3, 2, 1]

      // 7.splice 从元素组某个位置删除/添加元素 返回删除的元素数组
      // const arr = [1,2,3,4,5,6,7,8,9]
      // console.log(arr.splice(0,2)) //从0的位置，删除第一,二个元素 返回值为删除的元素数组[1,2]
      // console.log(arr) //[3, 4, 5, 6, 7, 8, 9]
      // console.log(arr.splice(1,1,10)) // 从1的位置开始删，删除第一个元素 返回值为删除的元素数组[4]
      // console.log(arr) //[3, 10, 5, 6, 7, 8, 9]
    </script>
  </body>
</html>
